﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;

//using System.Drawing;

//using LowLevelGraphics;

//namespace LowLevelGraphics.Drawing.FloodFillModes
//{
//    public class FloodFillMode
//    {
//        public void Fill(UnsafeBitmap bitmap, int _ptX, int _ptY, Color _color)
//        {
//            int nMinY = _ptY;
//            int nMaxY = _ptY;

//            Color color = Color.Transparent;
//            int y = 0;
//            int x = 0;
//            int nHeight = bitmap.Height;
//            int nWidth = bitmap.Width;

//            //Get the color
//            Color colorStartPixel = bitmap.GetPixel(_ptX, _ptY);

//            //Get topmost pixels
//            for (y = _ptY - 1; y >= 0; y--)
//            {
//                color = bitmap.GetPixel(_ptX, y);
//                if (!Check(color, colorStartPixel))
//                {
//                    nMinY = y;
//                    break;
//                }
//                bitmap.SetPixelDirect(_ptX, y, _color);
//            }


//            //get bottom most pixels
//            for (y = _ptY + 1; y < nHeight; y++)
//            {
//                color = bitmap.GetPixel(_ptX, y);
//                if (!Check(color, colorStartPixel))
//                {
//                    nMaxY = y;
//                    break;
//                }
//                bitmap.SetPixelDirect(_ptX, y, _color);
//            }
//            if (nMaxY == -1)
//            {
//                nMaxY = nHeight - 1;
//            }

//            //Since we got the borders now, let's walk from left to right
//            //and right to left for each line
//            int nCount = 0;
//            for (y = nMinY; y < nMaxY; y++)
//            {
//                for (x = _ptX - 1; x >= 0; x--)
//                {
//                    color = bitmap.GetPixel(x, y);
//                    if (!Check(color, colorStartPixel))
//                    {
//                        break;
//                    }
//                    bitmap.SetPixelDirect(x, y, _color);
//                    nCount++;
//                }
//                for (x = _ptX + 1; x < nWidth; x++)
//                {
//                    color = bitmap.GetPixel(x, y);
//                    if (!Check(color, colorStartPixel))
//                    {
//                        break;
//                    }
//                    bitmap.SetPixelDirect(x, y, _color);
//                    nCount++;
//                }
//            }
//        }


//        public bool Check(Color _color, Color _colorToCheck)
//        {
//            return ColorFunctions.IsInColorTolerance(_color, _colorToCheck, 31, 31, 31);
//        }

//    }
//}
